|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
出错代码如下,为monitor中的一个task
task my_monitor::receive_one_pkt(ref my_transaction get_pkt);
logic valid=0;
logic [7:0]data;
byte unsigned data_q[$];
byte unsigned data_array[];
int data_size;
while(!valid)
receive_one_byte(valid,data);
while(valid)
begin
data_q.push_back(data);
receive_one_byte(valid,data);
end
data_size=data_q.size();
data_array=new[data_size];
for(int i=0;i<data_size;i++)
data_array=data_q;
get_pkt.payload=new[data_size-18];
data_size=get_pkt.unpack_bytes(data_array)/8;
endtask
编译通过,仿真错误报告如下:Error-[DT-NV] Negative value
/home/klin/jiangwei/uvm-1.1b/examples/integrated/my_book_test_layer/tb/agent/monitor.sv, 61
Negative size value -18 specified for dynamic array
Please make sure that the specified value is a non negative number.
对照正确的程序发现如果把程序中第一个while(!valid)改成while(valid!==1)则仿真可以通过
不明白为什么会报错以及为什么这么改就不会出错,求高人解答 |
|