微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 新手请教:system verilog里的回调和scoreboard

新手请教:system verilog里的回调和scoreboard

时间:10-02 整理:3721RD 点击:
请问,system verilog里的回调是个什么概念呢?看system verilog verification(writing testbench)的8.7节,搞不清楚。
再就是使用回调的记分板是怎么实现的呢?
新手上路,请各路前辈指点,O(∩_∩)O谢谢!

callback: 就是一个很简单的原理, 包装了很多概念的外衣.
你的SV代码, 最后多变成顺序执行的C代码, 那么在testbench写好后, 我想在一个task里面添点东西怎么办? 前面添点, 后面添点?
解决方法就是在写testbench时, 就预留几个virtual的task在你想添程序的地方, 然后在case里再实现这些virtualtask, 还是看例子:
DRV_callback : cb[$]; // 例化一个类的队列, 用来做callback, 这个类里有一个虚方法pre_tx();
task run() begin
foreach (cb[i]) cb[i].pre_tx(); // 预留着执行这个虚方法.
...
end
在你想在run()里填东西的时候, 你可以继承DRV_callback, 重载里面的pre_tx(), 然后再test的initial里push到cb里去.就实现callback了. 因为是一个队列, 所以你可以不停地添东西.
假如你添一个scoreboard, 那就实现了用callback收集数据到scoreboard的功能.
三言两语说不清楚, 建议新手先看System Verilog for Verification这本书, 亚马逊有英文原版卖, 如果没钱, 可以到当当买中文正版, 很便宜. 一定要支持正版哦.

看过帖子

O(∩_∩)O谢谢指点!现在正在看的就是这本书的中文版。

谢谢指点!

我觉得看了一遍之后,印象不是很深,需要实际操作。

就是你好比你想去看电影,但是不知道能不能抽得出来时间去看,但是等你确定你有时间去看的时候电影院就没位置了,所以你先买张电影票,占个位置,去不去由你自己情况确定,你去那个位置是你的,没人和你抢,你不去,空个位置在那里,对电影院来说没有一点影响,因为它已经收了你的钱了。
回调就是相当于先占个茅坑,拉不拉完全取决于你自己想不想!
就这么简单。

但是计分板这个东西的特点是它被动构件,就是说它从不主动要求别人给它东西,你给它它就要。
基于这个特点,在VMM中使用回调来连接计分板;
但是在OVM中使用专门的analysis端口来连接计分板,UVM应该也一样;
很显然,OVM中的这种方式远远强于VMM的处理方式!
因为VMM中的channel这个东西部区分使用它的构建的性质,比如是主动的还是被动的还是从动的,VMM不管这些性质,完全靠使用者自己去恰当使用它提供的一堆方法。
VMM channel严重影响了重用性!

callback不是 system verilog的特性
callback 是 软件设计工程里面的概念,在IC验证领域callback 是由 synopsys贡献出来的,最早是RVM方法学, 到现在的VMM
之后OVM借鉴了这种概念 直至现在的UVM
也就是说 用sv做验证的项目 可以用很多native system verilog的方法来实现 callback啊 channel啊phase这些东东

ding !

ding !

学习了

再次拜读

正在学习,顶一个!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top