Question on muti-thread and single-thread sequences

Hi Ben,
thanks a lot for the immediate reply. I have following questions with reference to above:

  1. 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

  2. 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?

  3. 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)

  4. 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?

  5. However, b[->1] ##1 c is single threaded since after b, c must follow. Is this correct?

thanks and regards,
-sunil p.