开始学习《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++。

posted @ 2023-04-22 10:43  颜秋哥  阅读(90)  评论(0编辑  收藏  举报