如标题描述,环境平台中scorboard中两个并行块get从refmodel中的预期数据和monitor采到的实际数据,比较疑惑的问题是,expect只new了一次,假如运行push到q的时候,恰好第二个块里面expect从q中pop出来,这样不会混乱么?平台大概两百个用例,跑了很多遍也没有fail过,而且不是平台一起来就所有的rm预期就生成好的,感觉会有这样的可能性存在,但确实没遇到过,有没有大佬来解答一下。scb如下:
new()如下
expect = new();
actual = new();
main_phase()如下
fork
while (1) begin
rm2scb_port.get(expect);
if(expect.cmp_id ==1) begin
q1.push_back(expect);
end else if(expect.cmp_id==2) begin
q2.push_back(expect);
end else if(expect.cmp_id==3) begin
q3.push_back(expect);
end
end
while(1) begin
outmon2scb_port.get(actual);
compare_result();
end
join
cpmpare_result()如下:
if(actual.cmp_id ==1) begin
expect = q1.pop_front;
result= actual.compare(expect);
end
if().......
....以此类推