马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
HI : 各位大神,小弟在学习SV队列的过程中遇到如下问题。
`timescale 1ns/100ps
program test_q();
vmm_data p_put,p_get;
vmm_data arr[$];
initial begin
p_put = new();
p_get = new();
arr = {};
begin
p_put.data_id = 10;
$display("the id= %d @%t",p_put.data_id,$time);
arr.push_back(p_put);
p_get=arr.pop_front();
$display("the id= %d @%t",p_get.data_id,$time);
p_get.data_id = 20;
$display("the id= %d @%t",p_put.data_id,$time);
$display("the id= %d @%t",p_get.data_id,$time);
end
end
结果是这样的:
the id= 10 @ 0
the id= 10 @ 0
the id= 20 @ 0
the id= 20 @ 0
我觉得p_get=arr.pop_front();之后再改变p_get.data_id的值不会影响p_put.data_id的值才对,但是结果是影响了,但是原因不明确,感觉是p_get&p_put
还是指向同一块内存的的样子。求大侠解释一下。 |