我使用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++。
标签:指南,insert,q2,SytemVerilog,back,pop,front,编写,display From: https://www.cnblogs.com/integrated-circuit-testing/p/17342576.html