马 鹏,刘 佩,张 伟
(华东计算技术研究所,上海 201808)
SoC (System on Chip)产品研发一般采用正向设计方法,产品的开发流程包括:项目策划、系统说明以及行为描述、RTL 描述、前端仿真、后端设计、流片阶段、出样等[1].项目策划阶段会对市场需求进行调研,形成产品规格书.在系统说明及行为描述阶段,确定设计对象和目标,明确芯片功能、内外部性能要求等,从而定制RTL 代码.本文以一款工控CPU 芯片研制为例,芯片内部需要集成CPU 核以及大量的外设(如SPI、I2C、UART、CAN、SPI、PCIE、USB、DMA 等),在RTL 描述阶段将整体任务划分为各个子模块实现,根据任务书的需求分析,通用性IP 配置达不到目标需求.因此,这部分模块只能通过自研的方式实现.而自研代码相比较于成熟IP 而言可靠性不高,风险大,必须依靠前仿验证保证RTL 代码功能的完善完备性,前仿任务艰巨繁重.
传统的验证方法[2],需要验证人员具备丰富的经验,人的因素很大,进度不可控,难以满足复杂的SoC验证需求.目前,市场上流行的验证方式是UVM (Universal Verification Methodology)验证方法学.
UVM 验证方法学[2],由Accellera 于2011年2月推出,以SystemVerilog类库为主体的验证平台开发框架,继承了VMM和OVM的优点,构建的验证环境具备可重用组件构建标准化和层次化特性,并且得到了Synopsys、Mentor和Cadence 公司的支持,EDA 环境构建完善.它目前已经得到市场的验证,现在市面上很多IC 设计公司都已经在使用[1].UVM 方法学的特点是能够产生带约束的随机测试激励、通过refm 设定可以判定输出结果是否符合预期,能够进行大量的随机验证,平台本身具备可靠性,加入……