| |
OVM就是Mentor和Cadence用Systemverilog写的一个layer的测试平台,这样用户可以重用其中的很多class和宏定义,缩短TB的开发周期。
假期边带孩子边看文档,上班三天再看到公司的OVM环境,突然有了新的体会。scoreboard中的write方法原来是每拍执行的,所以可以不挺调用这些阻塞的方法(compute_minmax,delay):
virtual function void write(avg_item trans_item);
//Collect data from monitor
a = trans_item.a;
b = trans_item.b;
//Compute MIN/MAX
compute_minmax;
compute_vgaavg;
delay;
endfunction
关键是sb和monitor的通信机制很绕眼,monitor在每个clock都给sb发一个avg_item,方法是在monitor中定义一个ovm_analysis_port类型的端口,并且带有avg_item的参数,然后通过monitor中run task调用write方法把avg_item类型的数据组传输给sb。够绕眼吧!
接下来要继续看看ovm_cookbook等相关资料继续加深理解。