我是系统verilog的新手,正在尝试使用Modelsim学生版的基本邮箱代码。我能够成功编译代码并模拟它,但我没有得到预期的结果。 put和get任务中有一个for循环,但循环没有被执行。 Foll是代码:
// simple mailbox //
module mailbox_new();
mailbox my_mailbox;
initial begin
my_mailbox =new();
if(my_mailbox)
begin
fork
put_packets();
get_packets();
#1000;
join_any
end
#1000;
$display("END OF PROGRAM");
end
task put_packets();
integer i;
begin
for(i=0;i<10;i++);
begin
#10;
my_mailbox.put(i);
$display("Done putting packet %d @time %d",i, $time);
end
end
endtask
task get_packets();
integer j;
begin
for(j=0;j<10;j++);
begin
#10;
my_mailbox.get(j);
$display("Done getting packet %d @time %d",j, $time);
end
end
endtask
endmodule
// end of code /////
the result being displayed is :
# Done putting packet 10 @time 10
# Done getting packet 10 @time 10
# END OF PROGRAM
这是我的for循环没有正确执行。你能帮我解决这个问题。无论是编码问题还是工具问题
答案 0 :(得分:2)
您的代码存在多处问题,但最明显的一点是您在;
语句后添加了分号for
。这意味着您将循环而不执行任何操作然后执行begin...end
块。删除额外的;
,你应该没事。