Constraint Random-based Verification

1. 课程大纲

本课程介绍采用Cadence Specman Elite, Synopsys' Vera和SystemVerilog等高级验证语言,以随机为基础的验证方法学,为复杂ASIC, FPGA和板级设计和验证团队在考虑采用随机为基础的方法学提供了非常好的介绍。我们会帮助您提高在随机生成测试向量、数据检查的策略、功能覆盖率等方面的知识和技能来最终提高验证的信心和效率。

  1. 介绍基于随机的验证方法学,帮助您理解采用随机技术来验证当前复杂系统的精髓。我们定义到底什么是“验证”,比较传统的和基于随机的验证方法学,回顾白盒验证,并且解释面向对象编程技术在现代验证方法中的重要性。最后,我们还简述可重用验证IP的重要性,以及总结了高级验证语言相对于Verilog和VHDL的显著优点。
  2. 重点讲解随机验证方法学的三大关键点。首先涉及的是有效的测试向量生成技术,我们将回顾基本的、随机的和直接的生成方法,我们将讨论生成模块的拓展和约束,测试场景和序列的定义,已经如何管理生成的可重复性。其次,我们将讨论数据检查的方法以及如何开发scoreboard。最后我们重点解释了功能覆盖率的定义,如何设立合理的覆盖率目标,以及如何在保证仿真效率的基础下搜集功能覆盖率数据。
  3. 简洁的验证计划是随机验证方法学的原动力。我们将讲解验证计划的合理性,对验证计划的一些通常的误解,以及讲解如何创建一个有效的验证计划。我们将讨论以接口、特点和边界方法为基础的不同的面向方向的验证方法。最后将有一个深入的练习,让大家有机会来创建一个工作且有效的验证计划。

2. 培养对象

如果你在考虑将你的验证方法从传统的,直接的测试方法改进为现代的随机验证方法,那么这门课就非常适合你。如果你或者你的团队准备采用Specman Elite, Synopsys Vera 或者SystemVerilog等验证工具,那么这门课程会帮你了解随机验证方法学和工具的优点。

3. 学习环境

这是一个交互的课程,众多练习将穿插在课程当中,George will provide detail information about the classroom and other facility.

4. 学时:一天

5. 具体课程安排

5.1. 随机验证方法学简介

  • 什么是验证?回顾验证,非验证。评估可能的验证结果。
  • 传统的(Verilog, VHDL)直接验证方法。比较随机验证方法和传统的验证方法。
  • 如何处理验证的颗粒度?系统级?模块级?还是只验证内核?
  • 回顾黑盒、白盒、灰盒的验证方法。
  • 在高级验证语言中,面向对象编程技术的角色。
  • 可重用验证IP以及如何加速整个系统的验证。
  • 理解高级验证语言相对于Verilog和VHDL的关键优点。

5.2. 随机验证方法的三个关键点

  • 测试向量生成方法
    • 数据生成流程
    • 主要的生成方法:基本的、直接的、随机的、约束随机的。
    • 保证生成的可重复性
    • 如何扩展生成模块
    • 用约束来管理随机的特性
    • 序列和测试场景的角色
  • 数据检查基础
    • 什么是数据检查
    • 计分板来追踪结果
    • 时序检查
    • 如何用事件进行数据检查
  • 功能验证覆盖率
    • 设定覆盖率目标
    • 什么是功能覆盖率
    • 用功能覆盖率来评估测试用例的有效性、冗余性以及定位测试漏洞
    • 基础的、转移、交叉覆盖率类型
    • 衡量覆盖率:验证工作结束与否的尺度

5.3. 验证计划的角色

  • 什么是验证计划?
  • 如何创建验证计划;所有权以及格式;验证计划结构中的一些常见错误
  • 创建验证计划的螺旋式过程。硬件设计阶段,验证阶段,随机化阶段
  • 讨论on-the fly和post-processing两种自检测方法的优缺点
  • 测试点提取方法,有基于接口的,基于功能点的,基于边界条件的。具体的测试用例生成又可以分为直接生成的和用产生器来生成两种方法。
  • 练习:创建一个有效的验证计划
    • 面临的挑战
    • 管理众多的Spec
    • 验证的基础设施图
    • 如何管理验证里面的各个层次,各个阶段和各个方面
    • 总结