开始学习《SytemVerilog验证测试平台编写指南》
我使用ModelSim的Starter版学习,
在这一段代码上报错:
module TestArray;
int j = 1, q2[$] = {3,4}, q[$]={0,2,5};
initial
begin
//q.insert(1, j);
//q.insert(3,q2);
q.delete(1);
q.push_front(6);
j = q.pop_back;
$display(j);
q.push_back(8);
j = q.pop_front;
$display(j);
foreach (q[i])
$display(q[i]);
q.delete;
end
endmodule
两个insert都不支持,我就换成了Questa的Starter版本,这些Starter版都是Quartus附带的那种。发现这次可以编译仿真如下的代码:
module TestArray;
int j = 1, q2[$] = {3,4}, q[$]={0,2,5};
initial
begin
q.insert(1, j);
//q.insert(3,q2);
q.delete(1);
q.push_front(6);
j = q.pop_back;
$display(j);
q.push_back(8);
j = q.pop_front;
$display(j);
foreach (q[i])
$display(q[i]);
q.delete;
end
endmodule
支持insert数值了,但还是不支持insert队列,具体报错信息为:
(vlog-13215) Arg. 'item' of 'insert': Cannot assign an unpacked type 'int $[$]' to a packed type 'int'.
书上有一个脚注:并不是所有的SystemVerilog仿真器都支持使用insert()对队列插入新值。
挺好玩的,严谨!
也有个不太好玩的地方,每次启动Questa,都和我在Ununtu上启动ModelSim一样,启动一个黑黑的控制台界面……
暂时还是使用ModelSim继续学习。
顺便说一下,如果说Verilog语法有点像C语言,那么SystemVerilog确实有点像C++。

浙公网安备 33010602011771号