|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
1. 我在reference model里面写了一个函数,是将transaction里每两个128bit的数据进行运算,最后得到的结果表示为一个128bit数据(outut_tr.data[i/2]=my_function(input_tr.data[i],input_tr.data[i+1]))。但是reference model的输出数据只有前面一部分,比如说输入有10个数据,输出应该有5个数据,但是只收集到了3个数据,这是为什么呢?(我进行了打印查看,reference modle接收的输入数据是完整的)2. reference modle的输入数据通过blocking_get_port.get拿到,输出通过analysis_port.write()发出去
3.scoreboard接收到的reference modle输出的结果又更少了(scoreboard最后可能只收到了1个数据这样...)
reference_modle的main_phase代码如下:
task my_reference_model::main_phase(uvm_phase phase);
my_transaction input_tr, output_tr;
super.main_phase(phase);
phase.raise_objection(this);
while(1) begin
port.get(input_tr);
output_tr=new("output_tr");
for(int i = 0;i < 16; i=i+2) begin
output_tr.data[i/2]=my_function(input_tr.data[i],input_tr.data[i+1]);
$fdisplay(log_file_01, "%h", output_tr.data[i/2]);
end
end
$fclose(log_file_01);
endtask
|
|