Interaction of Threads

Hi Folks
In the last write-up, I mentioned threads in simulation. Specifically, I said that the threads of a simulation can interact with each other. Well, what does that mean? Consider the Verilog code-snippet below –

assign y = a + b; // continuous assignment
initial begin // initial block
$monitor(“@time %t -> a=%d, b=%d, y=%d”, $time,a,b,y);

a = 0; b = 0;
#10
a = 5;
#10
b = -5;
#10
$finish;
end

It produces this output:

@time 0 -> a= 0, b= 0, y= 0

@time 10 -> a= 5, b= 0, y= 5

@time 20 -> a= 5, b= -5, y= 0

Let’s explain this in a moment.

For the sake of convenience, let’s call the ‘continuous assignment statement’ in the code snippet as T1. Let’s call the ‘initial block’ in the code snippet as T2.

What we did in T2 is — we changed the value of variables ‘a’ and ‘b’ randomly over a period of time.

When the values of ‘a’ and ‘b’ changed, T1 triggered? Why is that?

The reason is –

Variables ‘a’ and ‘b’ are on the RHS of T1 expression. That is, ‘a’ and ‘b’ are in the sensitivity list of T1
Technically, a value change in ‘a’ or ‘b’ is known as an ‘event on a’ or ‘event on b’ respectively
According to the rules of Verilog, whenever an event occurs on the sensitivity list of a continuous assignment statement, the expression in the continuous assignment has to be evaluated and the newly computed value of the RHS has to be assigned to the LHS
As per T2, we are causing events on a or b at times 0, 10 and 20. Hence, new values of ‘a+b’ (and hence y) are printed at times 0, 10 and 20.

So, an action on T2 is causing T1 to execute.

Now, does it give an idea on how T1 and T2 can interact? The rest is your creativity as you try to write complex models.

Happy coding, Folks!

Tech Pubs,

Proxelera

A New Empowering Venture

Proxelera’s unmatched expertise in VLSI design is expanding into new frontiers in the international market. Our business operations are making an entry into the Israeli market aggressively, heralding a new milestone. In this regard, we have signed up with the Israeli company, TechLink Global Ltd, based out of Tel Aviv.
TechLink, headed by its president Mr Motty Houli, will be our representative in Israel. We are confident that this venture will be profitable in more ways than one for both partners. Proxelera’s presence in one of the most technologically advanced countries in the world stands as a testimony to our technical prowess in the VLSI and semiconductor `industry. India has a multi-faceted, strategic partnership with Israel across many sectors, and this new business nexus takes our aim of strengthening both the semiconductor technology & the ecosystem to new heights.