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

时间:2015-02-18 06:17:51

标签: system-verilog

我是系统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循环没有正确执行。你能帮我解决这个问题。无论是编码问题还是工具问题

1 个答案:

答案 0 :(得分:2)

您的代码存在多处问题,但最明显的一点是您在;语句后添加了分号for。这意味着您将循环而不执行任何操作然后执行begin...end块。删除额外的;,你应该没事。