System verilog 使用ModelSim模拟简单系统verilog邮箱代码

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

我不熟悉系统verilog,正在尝试使用Modelsim学生版的基本邮箱代码。我能够成功地编译代码并进行模拟,但没有得到预期的结果。put和get任务中有一个for循环,但是没有执行该循环。 以下是代码:

// 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
语句的
后面加了一个分号
。这意味着您将循环,不做任何事情,然后执行
开始…结束
块。删除多余的
,您应该会没事的