SV 第一章 验证导论

发布时间 2023-07-31 18:28:16作者: Temporarily

SystemVerilog验证

1 验证导论

测试平台验证待测设计的正确性,包含步骤:

  • 产生激励
  • 把激励作用于DUT
  • 捕捉响应
  • 校验正确性
  • 对照整个验证目标测算进度

测试平台方法学(搭建测试平台遵循以下原则):

  • 受约束的随即激励
  • 功能覆盖率
  • 使用是五处理器的分层测试平台
  • 对于所有测试的通用测试平台
  • 独立于测试平台之外的个性化测试代码

随着漏洞出现率的下降,应当闯将新的随即约束去探索新的区域,最后几个漏洞可能只能通过定向测试来发现,但是绝大部分的漏洞都会在随机测试中出现。

考虑一个设计的激励的随机化时,除了随机数据,还需要找出控制逻辑上的漏洞。广泛的考虑设计输入:

  1. 设备和环境配置:实际的应用环境中,随着使用时间的增加,配置会变得越来越随机。应该对于整个环境的配置进行随机化,包括仿真的市场、设备的数量,以及他们的配置方式,需要创建约束以确保配置的合法性。

  2. 输入数据:需要实现估计好所有的分层协议和错误注入,以及计分板的内容和功能覆盖率

  3. 协议异常、错误和违例:尽量长史仿真实际的硬件中可能会出现的错误,如果一个总线事务未完成会怎样?非法的操作会怎样?有没有指出哪两个信号互斥?对这些情况一一尝试。

    增加用于校验的代码来帮忙找出问题,至少应该在出错得到时候将错误打印出来,如果能在出错时九江在错误的地方停止仿真,对故障的溯源将会由很大帮助。

  4. 时延和同步:创建一个测试平台以最块的速度和另一块代码块通信,但隐蔽的漏洞往往实在引入间歇性时延之后才被发现的。同一个的接口的所有激励可能都能正常工作,但是如果面对同时对个输入,隐蔽的漏洞就可能会出现。尝试协调各个驱动器是他们能在不同速率下进行通信。

随机测试包含了测试平台代码和随机的种子。每次仿真都需要选定一个独特的种子,如果使用自燃事件作为种子,依然会引起重复,应该将处理器的名称也加入到种子中,如果是集群几桶中由多核计算机,还是可能会出现两个相同的种子,这时候应该把处理器核的编号也加到种子中去。

分层可以减少重复性的劳动,将代码分而治之。

image-20230709011041295 image-20230709011854899
  • 信号层:包含有待测设计和把待测设计连接到测试平台的信号
  • 命令层:执行总线读或写的命令的驱动器驱动了待测设计的输入,监视器负责检测信号的变化并分组,断言监视独立的信号以寻找穿越整个命令的信号变化。
  • 功能层:代理接受来自上层的食物,例如DMA读写,把他们分解成独立的命令。
  • 场景层:场景层负责协调设备的操作步骤,例如MP3下载一个文件需要的若干个步骤
  • 测试层:像一个指挥官,测试包含了用于创建激励的约束

仿真环境的阶段:把各个阶段定义好,以便协调测试平台,使得项目中的所有代码能够在一起工作。三个基本的阶段,不同的阶段也可以继续细分为更小的步骤

  1. 建立(Build):
    1. 生成配置:把待测计划的配置和周围的环境随机化
    2. 建立环境:基于配置来分配和连接测试平台构建
    3. 对待测设计进行复位
    4. 配置待测设计
  2. 运行(Run)
    1. 启动环境:运行测试平台构建
    2. 运行测试:启动测试然后等待测试完成
  3. 收尾(Wrap-up)
    1. 清空:在最下层完成以后,等待待测设计清空最后的事务
    2. 报告:待测设计空闲下来后,可以清空里留在测试平台中的数据