Stay in touch with EE Times India
eeBlog-Article content

Profile
 Nickname: asicwithankit     Articles(7)    Visits(39521)    Comments(5)    Votes(24) ASIC with Ankit covers ASIC design verification, languages and methodology. The author, Ankit Gopani, works as a Lead Design Verification Engineer with SmartPlay Inc. He has 9 years of industry experience in ASIC design verification and executed several Verification projects. Blog Archive: 2015 -  Mar.  2014 -  Nov.  2013 -  May.,  Apr.,  Mar.,  Feb. View All

Posted: 12:52:59 AM, 19/05/2013

# System Verilog Queues which can shrink and grow !

System Verilog has new data type called ‘queue’ which can grow and shrink. With SV queue, we can easily add and remove elements anywhere that is the reason we say it can shrink and grow as we need. Queues can be used as LIFO (Last In First Out) Buffer or FIFO (First In First Out) type of buffers.

Each element in the queue is identified by an ordinal number that represents its position within the queue, with 0 representing the first element and \$ represents the last element.

The size of the queue is variable similar to dynamic array but queue may be empty with zero element and still its a valid data structure.

Lets take a few examples to understand queue operation with different methods we have in system verilog.

###############################################
int a;
Q[\$] = {0,1,2,3};  // Initial queue

initial begin
//Insert and delete
Q.insert (1, 1); // This means insert 1 at first element in the queue which becomes {0,1,1,2,3}
Q.delete(2); // This means delete 2nd element from the queue. {0,1,2,3}

//Push_front
Q.push_front (6);  //Insert ‘6’ at front of the queue. {6,0,1,2,3}

//Pop_back
a = Q.pop_back; // Poping the last element and stored it to local variable ‘a’,  a = 3 in this case. Resultant Queue = {6,0,1,2}

//push_back
Q.push_back(7) // Pushing the element ‘7’ from the back. {6,0,1,2,7}

//Pop_front:
a =Q.pop_front; Poping the first element and stored it to local variable called ‘a’, a=6 in this case. Resultant Queue = {0,1,2,7}

end
#####################################################

When you create a queue System Verilog actually allocates extra space and because this we can add and remove the element based on need in our test bench. This is very useful feature in test bench implementation. System Verilog automatically allocates the additional space so we don't need to worry about the limits and queue will not run out of space.

Queue is very useful data type in System Verilog for developing a test benches. It can be used in development of various entity in the test bench like scoreboard, monitor, transaction class, drivers etc.

Hope this helps in basic understanding of queue and its methods.

ASIC With Ankit
Label: System Verilog
Views(2112) Comments(1) [Last update: 12:52:59 AM, 19/05/2013]
Visitor: Comment: Visitor 03:37:14 AM, 22/11/2013 Can you please talk about multidimensional queue's. Maybe a 3D queue.

Got something to say? Why not share itwith other engineers?

Top eeBlog Keywords

1.  arduino

2.  software

3.  power

4.  code

5.  embedded

Happening Now...

eeBlogs
• Grasping the normal distribution (Part 5)
Posted:21/05/13 02:03 PM
• Grasping the normal distribution (Part 4)
Posted:16/05/13 02:54 PM

• Examining binge work
Posted:14/03/16 06:57 PM
• Boost your engineering value in only 20 mins ...
Posted:11/09/15 09:15 PM

• Dealing with untethered mobile/wireless batte...
Posted:02/10/15 06:13 PM
• Keeping eyes on the road
Posted:27/09/15 01:27 PM

• Megavolt tests expose extreme engineering cha...
Posted:29/04/16 06:04 PM
• From metrology to existentialism
Posted:24/03/16 11:52 AM
eeForum homepage
﻿