Formal Definition
Stochastic analysis tasks provide a means of managing queues.
Simplified Syntax
$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) ;
Description
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. |
Examples
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.
Important Notes
- The status parameter value should be checked after all operations on the queue.
No comments:
Post a Comment
Please provide valuable comments and suggestions for our motivation. Feel free to write down any query if you have regarding this post.