The advance of SystemVerilog

上一篇 / 下一篇  2018-05-26 21:53:32 / 个人分类:Verification

1. 回调(P237)
(1)为测试平台提供一个“钩子”,以便测试程序在不修改原始类的情况下注入新的代码;
(2)注入错误,放弃事务,延迟事务,将事务跟其他事务同步,将事务放进记分板,收集覆盖率数据等;
(3)使用方法:
1)建立Driver_cbs类,其中有virtual task pre_task; post_task;其中的task的参数使用引用调用或者传入Driver的句柄。
2)在Driver中例化Driver_cbs cbs[$], 在Driver中定义task run(), 在run中,定义foreach(cbs[I]) cbs.pre_tx(tr,drop), 定义transmit(tr); 定义foreach(cbs[I]) cbs.post_tx(tr,drop);
3)  建立Driver_cbs的继承类,修改其中的pre_tx或者post_tx;
4)  在program automatic test 的initial 中调用env.drv.cbs.push_back(dcd),然后调用run;

2.blueprint(P220)
先构建一个对象的蓝图,然后修改其约束,甚至使用一个扩展对象替换它。然后随机化这个蓝图,接着复制这个对象,并将拷贝值发送给下游的事务处理器。
使用方法:
1)在Generator中定义Transaction blueprint,然后在new函数中blueprint=new()例化。在run函数中assert(blueprint.randmoze()); tr=blueprint.copy();然后gen2drv.put(tr);
2)  在Environment类中例化Generator,并执行三个阶段:创建(Build),运行(run)和收尾(wrap_up)等,在run 中gen.run()  drv.run()
3)  创建Transaction 类的继承BaseTr,并修改其约束等,建立新的类型;
4)在program automatic test中的initial 中 例化BaseTr bad=new();并替换blueprint: env.gen.blueprint=bad.

3.虚接口
使用XMR(跨模块引用)连接接口和测试程序
在program automatic test中virtual bus_ifc bus=top.bus
为什么要使用虚拟接口?
1)虚拟接口是唯一可以桥接动态对象和静态模块、接口的一种机制。
2)虚拟接口可以program automatic test中把接口合并称数组引用。

4.信箱的使用

5.覆盖率的使用

6.交叉覆盖率

7.覆盖率的种类
代码覆盖率,功能覆盖率,漏洞率,断言覆盖率

8.覆盖组的触发
(1)在driver中使用覆盖组的回调函数;
(2)使用事件进行触法;
covergroup name@(trans_ready)
(3)使用断言进行触发;
covergroup name @($root.top.m1.write_event) 

9●注入错误的方法
         (1)在driver中使用回调函数,在Pre_tx中注入错误激励…
         (2)在generator中使用blueprint,在test中重新赋值blueprint
         (3)在test中使用randomized with 注入错误激励

10.Verilog 的不足:
1)verilog 中的 initial、task、 function多用于验证。verilog在验证方面最大的问题就是功能模块化、随机化验证上的不足。这导致更多的是直接测试用例(dircet test case).
2)可以把IC笼统的分为两类:算法需求比较少的和算法需求非常复杂的,复杂的算法会在ve ri lo g编码前使用C或C++建立算法模型(reference model),验证需要将算法模型的输出与DUT的输出进行对比。
3)System Verilog 是Verilog的扩展集,完全兼容Verilog;
4) SV具有面向对象语言的特性:封装、继承、多胎。同时还提供了独有特性:约束,功能覆盖了,邮箱等
5)SV提供了DPI接口,可直接把C或C++函数导入SV平台,SV本身提供了内存管理机制,还支持系统函数$system,可以将C/C++编译的参考模型编译成可执行文件,使用¥system函数调用。

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2018-10-22  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 8112
  • 日志数: 37
  • 建立时间: 2018-01-19
  • 更新时间: 2018-07-17

RSS订阅

Open Toolbar