Hi Ben,
thanks a lot for the immediate reply. I have following questions with reference to above:
-
In your book, in section 2.3.1, page 27, following example is given :
An example of a single threaded sequence is a ##2 b ##1 c[->1]. However, this would mean-
(a##2b##1c) or (a##2b##1!c##1c) or (a##2b##1!c ##1!c##1c) … there are many possibilities. So will it be multi-threaded and not single threaded? Or it is single threaded since if one combination is true, others cannot be true and simulator does not need to evaluate them -
Using the logic given above ( i.e. b[->2] is equivalent to: !b[*0:] ##1 b ##1 !b[*0:] ##1 b),
expression b[->2] or b[=2] is also a sequence which is multi-threaded since
b[-> 2] means b##1b or b ##1!b ##1!b ##1 b … there are so many possibilities (till end of simulation). Is that understanding correct? -
If 2 is true, the expression b[->1] or b[=1] is a sequence which is not multithreaded since b appears only once. Is this understanding correct? Or it IS multi-threaded because you can have combinations like (!b##1b) or (!b##1!b##1b). However, does the thread evaluation start only when b is 1 or evaluation starts even when b is 0 as in (!b##1b) or in (!b##1!b##1b)
-
b[=1] ## 1 c is multi-threaded since this would mean -
b ##1c or b##1 !b ##1c or b##1!b ##1 !b ##1 c … There are many possibilities till simulation ends. Is this correct understanding? -
However, b[->1] ##1 c is single threaded since after b, c must follow. Is this correct?
thanks and regards,
-sunil p.