SystemVerilog验证导论

SystemVerilog硬件验证语言具有的典型性质

(1)受约束的随机激励生成。

(2)功能覆盖率。

(3)更高层次的结构,尤其是面向对象的编程。

(4)多线程及线程问的通信。

(5)支持HDL数据类型例如Verilog的四状态数值。

(6)集成了事件仿真器便于对设计施加控制。

验证计划

它描述了需要验证什么样的特性,以及采用哪些技术。这些步骤可能包含有定向或随机的测试,断言、软硬件协同验证、硬件仿真、形式验证,以及对验证IP的使用等等。

验证方法学

基本测试平台的功能

测试平台的用途在于确定待测设计的正确性。包含下列步骤:

(1)产生激励。

(2)把激励施加到DUT 上。

(3)捕捉响应。

(4)检验正确性。

(5)  对照整个验证目标测算进展情况。

定向测试

首先需要阅读硬件规范,然后写下验证计划,计划上列有各种测试,每个测试针对一系列相关的特性。按照这个计划,接着编写出针对待测设计具体特性的激励向量,然后使用这些向量对待测设计进行仿真。仿真结束后,手工查看一下结果文件和波形,确保设计的行为与预期的一致。一旦测试结果正确,你就可以在验证计划中把它勾掉,然后开始下一个测试。这种测试方法容易取得稳步的进展,但是其效率不高。

受约束的随机激励

利用仿真器产生随机激励,但是这些激励数值不是完全随机,受一定的约束。对于少数随机测试达不到的特性,编写定向测试。

功能覆盖率

对功能覆盖率的测量和使用包含了几个步骤。首先,需要在测试平台中加入代码,用于监控进入设备中的激励,以及设备对激励的反应,并椐此确定哪些功能已经被验证过。运行几次仿真,每次使用不同的种子。接下来,把这些仿真的结果合并到一个报告中。然后,你需要对结果进行分析,最后决定如何采用新的激励来达到那些尚未被测试到的条件和逻辑。

从功能覆盖率到激励的反馈

随着功能覆盖率逐渐接近极限﹐你需要改变测试,以期能找出新的方法去达到那些尚未被覆盖的区域。这被称为“覆盖率驱动的验证

仿真环境阶段

三个基本的阶段:建立(build)、运行(run)、收尾(wrap-up)

建立阶段可以分为如下步骤:

(1)生成配置:把待测设计的配置和周围的环境随机化。

(2)建立环境:基于配置来分配和连接测试平台构件。测试平台构件指的是存在于测试平台中的部分,注意与设计中的物理构件区分开,后者是采用RTL代码描述的。

(3)对待测设计进行复位。

(4)配置待测设计:基于第一步中生成的配置,载入待测设计的命令寄存器。

运行阶段是指测试实际运行的阶段,可分为以下步骤:

(1)启动环境:运行测试平台构件,例如各种BFM和激励发生器。

(2)运行测试:启动测试然后等待测试完成。定向测试的完成很容易判断.但随机浏试却比较困难。应该同时使用超时检测以确保待测设计或测试平台不出现死锁。

收尾阶段包含如下两个步骤。

(1)清空:在最下层完成以后,你需要等待待测设计清空最后的事务。

(2)报告:一且待测设计空闲下来,你就可以清空遗留在测试平台中的数据了。有时候保存在记分板里面的数据从来就没有送出来过,这些数据可能是被待测设计丢弃掉的。你可以根据这些信息创建最终报告,说明测试通过或者失败。如果测试失败,务必把相应的功能覆盖率结果删除,因为它们可能是不正确的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值