Stochastic analysis tasks provide a means of managing queues.
$q_initialize(identifier,
type, length, status) ;
$q_add(identifier, job,
information, status) ;
$q_remove(identifiers, job,
information, status) ;
$q_full(identifier, status) ;
$q_exam(identifier,
statistic_code, statistic_value, status) ;
All statistic analysis tasks include identifier, and status arguments. The identifier is a unique integer value identifying the queue. The status argument is an output integer parameter giving information about the correctness of the specified task execution.
Status |
Message |
0 |
The queue generation was successful. |
1 |
The queue cannot be increased; queue is full. |
2 |
The identifier is undefined; please define an identifier. |
3 |
Cannot remove a value; queue is empty. |
4 |
The queue cannot be generated; this type is unsupported. |
5 |
The length parameter is <= 0; the queue cannot be generated. |
6 |
The identifier is duplicated; please define new identifier. |
7 |
The queue cannot be generated; insufficient memory. |
$q_initialize creates a queue. Parameter type determines the type of a queue. In case of 1, the created queue is FIFO and in case of 2 the queue is LIFO. Parameter length is an integer value specifying the maximum number of entries.
$q_add adds a new entry to the queue. Parameter job identifies the job. The special user-defined parameter, information, can maintain any information useful for the user.
$q_remove receives data from the queue. Parameters of this task are the same as those of the $q_add task.
$q_full checks to see of the queue identified by the identifier parameter is full.
$q_exam returns statistical information about the queue. Parameter statistic_code determines what you need to check and returns the result in statistic_value. The following table lists all possible values of statistic_code:
Statistic_code |
Statistic_value |
1 |
Length of queue. |
2 |
Mean interarrival time. |
3 |
Maximum length of queue. |
4 |
Shortest wait time. |
5 |
Longest wait time for jobs still in the queue. |
6 |
Average wait time in the queue. |
Example 1
always @(posedge clk)
begin
// check if queue1 is full
$q_full(queue1, status);
// if full then show message and remove one item
if (status) begin
$display("Queue
is full);
$q_remove(queue1, 1,
info, status);
end
// add a new item to queue1
$q_add(queue1, 1, info, status);
// show message if there was an error
if (status)
$display("Error %d,status);
end
end
This example shows how to add a new element to the queues.
The status parameter value should be checked after all operations on the queue.
Powered by IXwebhosting |