|HOME |ABOUT |ARTICLES |ACK |FEEDBACK |TOC |LINKS |BLOG |JOBS |


Tutorials



MAILBOX


A mailbox is a communication mechanism that allows messages to be exchanged between processes. Data can be sent to a mailbox by one process and retrieved by another.

Mailbox is a built-in class that provides the following methods:
--Create a mailbox: new()
--Place a message in a mailbox: put()
--Try to place a message in a mailbox without blocking: try_put()
--Retrieve a message from a mailbox: get() or peek()
--Try to retrieve a message from a mailbox without blocking: try_get() or try_peek()
--Retrieve the number of messages in the mailbox: num()

EXAMPLE:
   program meain ;
   mailbox my_mailbox;
   initial begin
       my_mailbox = new();
       if (my_mailbox)
       begin
           fork
               put_packets();
               get_packets();
               #10000;
           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 i,packet;
   begin
       for (int i=0; i<10; i++)
       begin
           my_mailbox.get(packet);
           $display("Got packet %d @time %d", packet, $time);
       end
   end
   endtask
   endprogram

RESULTS:

   Done putting packet           0 @time                   10
   Got packet                    0 @time                   10
   Done putting packet           1 @time                   20
   Got packet                    1 @time                   20
   Done putting packet           2 @time                   30
   Got packet                    2 @time                   30
   Done putting packet           3 @time                   40
   Got packet                    3 @time                   40
   Done putting packet           4 @time                   50
   Got packet                    4 @time                   50
   Done putting packet           5 @time                   60
   Got packet                    5 @time                   60
   Done putting packet           6 @time                   70
   Got packet                    6 @time                   70
   Done putting packet           7 @time                   80
   Got packet                    7 @time                   80
   Done putting packet           8 @time                   90
   Got packet                    8 @time                   90
   Done putting packet           9 @time                  100
   Got packet                    9 @time                  100
   END of Program



Index
Introduction
Data Types
Literals
Strings
Userdefined Datatypes
Enumarations
Structures And Uniouns
Typedef
Arrays
Array Methods
Dynamic Arrays
Associative Arrays
Queues
Comparison Of Arrays
Linked List
Casting
Data Declaration
Reg And Logic
Operators 1
Operators 2
Operator Precedency
Events
Control Statements
Program Block
Procedural Blocks
Fork Join
Fork Control
Subroutines
Semaphore
Mailbox
Fine Grain Process Control

Report a Bug or Comment on This section - Your input is what keeps Testbench.in improving with time!





<< PREVIOUS PAGE

TOP

NEXT PAGE >>

copyright © 2007-2017 :: all rights reserved www.testbench.in::Disclaimer