论文部分内容阅读
随着集成电路进入超摩尔时代,集成电路规模日益增大,功能日渐复杂,验证工作在芯片研发周期中占到约70%的时间,传统的直接验证已无法满足工程上的要求。工程师希望通过提高代码复用率,随机化测试激励,自动化结果比对等方法来缩短验证周期,因此提出了基于System Verilog的通用验证方法学,并成为业界主流。然而,在某些数据量巨大的工程中,通用验证方法学也遇到了瓶颈,工程师们期待通过使用较少的测试用例来实现所有功能点的验证,并且开始将目光从仿真验证转向形式验证,即通过数学方法来更加高效的验证电路的正确性,从而提高验证效率。本文的验证对象是一款微处理器的向量标量定浮点转换单元,其功能繁杂且没有类似的验证方案供参考。针对这一问题,本文详细研究了IEEE754标准以及指令集对浮点数的特殊规定、指令运行的架构基础,并在此基础上,制定出以仿真验证为主形式验证为辅的验证方案。向量标量定浮点转换单元还具有数据类型多、数据量大的特点,单条指令的输入变化最高可达2133种情况,测试所有的输入在工程上不具有可行性,对验证的完备性也构成了很大的挑战。针对这一问题,本文深入分析了每类指令在每种运算模式下的运算过程,综合运用等价类分解法、边界值分解法等方法,从运算过程中归纳出每类指令的功能点,依据功能点设置指令源操作数激励的约束,从而只需较少的测试用例即可测试所有的功能点,同时保证了项目的可行性以及验证的完备性。此外,本文还简单探究了等价性检验的方法,并归纳其优缺点。仿真验证的验证平台需要模拟指令的执行环境,包括实现指令译码,模拟源操作数寄存器以及浮点状态控制寄存器,以及上述三者的同步等较多功能。针对这一问题,本文采用了通用验证方法学组件来划分并模拟各模块的功能,使得平台更具条理性以及维护性。依据验证方案进行验证后,仿真验证代码覆盖率达到97%,功能覆盖率达到100%,并针对未覆盖到的代码覆盖率给出合理的解释,形式验证中部分代表性的指令通过了等价性检验,项目最终取得了比较理想的验证效果。