System verilog 使用ModelSim模拟简单系统verilog邮箱代码
我不熟悉系统verilog,正在尝试使用Modelsim学生版的基本邮箱代码。我能够成功地编译代码并进行模拟,但没有得到预期的结果。put和get任务中有一个for循环,但是没有执行该循环。 以下是代码:System verilog 使用ModelSim模拟简单系统verilog邮箱代码,system-verilog,System Verilog,我不熟悉系统verilog,正在尝试使用Modelsim学生版的基本邮箱代码。我能够成功地编译代码并进行模拟,但没有得到预期的结果。put和get任务中有一个for循环,但是没有执行该循环。 以下是代码: // simple mailbox // module mailbox_new(); mailbox my_mailbox; initial begin my_mailbox =new(); if(my_mailbox) begin
// 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
//简单邮箱//
模块邮箱_new();
邮箱我的邮箱;
初始开始
我的邮箱=新建();
如果(我的邮箱)
开始
叉
放入数据包();
获取数据包();
#1000;
加入任何
结束
#1000;
$display(“节目结束”);
结束
任务put_数据包();
整数i;
开始
对于(i=0;i您的代码有多处错误,但最明显的是您在for
语句的后面加了一个分号;
。这意味着您将循环,不做任何事情,然后执行开始…结束
块。删除多余的;
,您应该会没事的