Question on fine grain process control in system verilog

Hi,
I have a questions on Process Class and fine grain process control in System verilog as below:

  1. The LRM 1800_2012, section 9.5 states -

9.5 Process execution threads
SystemVerilog creates a thread of execution for the following:
— Each initial procedure
— Each final procedure
— Each always, always_comb, always_latch, and always_ff procedure
— Each parallel statement in a fork-join (or join_any or join_none) statement group
— Each dynamic process
Each continuous assignment can also be considered its own thread (see 10.3).

What is a dynamic process - last item mentioned above. Can someone explain please

  1. Does above statement mean that “process execution thread” can be an Initial blocks, always blocks (always, always_ff, always_latch, always_comb) or fork threads spawned by Fork statement. What about tasks and functions? Are tasks and functions also process execution threads which can have process class associated with them:

  2. Can we have a process class associated with always block? Can always block be killed using the kill() method of process class?

  3. If statement 3 is true, what will happen after the always block sensitive to rising edge of clock gets killed? Will it not execute for all clock rising edges which come after the kill() is called?

thanks,
-sunil

In reply to puranik.sunil@tcs.com:

  1. This is a redundant sentence. See 0002471: what is a dynamic process? - Accellera Mantis
  2. Calling a task or function does not create a process thread
  3. Yes, you can kill an always process.
  4. See event @(posedge clk) | Verification Academy

I’ve run a few examples and I don’t get consistent behaviors from different tools. In any case, trying to kill an always block does not make much sense.

Thanks Dave for the detailed reply.
I was looking at the link 0002471: what is a dynamic process? - Accellera Mantis
It talks about the processes created by fork jon_none or fork join_any being dynamic and those created by fork join being static.
I do not understand use of “dynamic” or “static” in the context of process. (I understand class object as dynamic or variables being static or automatic, but use of static or dynamic for a process is not clear). Does dynamic process relate to a process created or not created based on some condition occurring run time and static process relate to the process whose creation does not depend upon runtime condition?

rgs,
-sunil

In reply to puranik.sunil@tcs.com:

That is one way to look at it. But the key feature of a dynamic thread is it can run in the background while its parent thread continues or terminates.