线程类:
问题:线程之间如何通信?
在
model
中,
initial
和
always
块作为独立的子线程是通过
信号的变化
来触发,并且实现进程间的通信。
在
sv
中, 通常用
initial
开启父类线程,包括
begin end
, 以
顺序方
式执行,但是不消耗时间,
fork join
以
并行
方式执行。
initial
父类线程可以有多个子线程块,父线程终止时,所有子线程终止,而子线程终止时,父线程可以继续。
fork join
线程的特点,并行执行其内部语句,当所有的语句执行完毕,退出该线程。
fork join_any
线程的特点,并行执行其内部语句,就跳出该线程,执行接下来的语句,不会等所有语句执行完毕。有可能整个线程都结束,其内部线程还在没结束。
fork join_none
线程的特点,一开始就跳出该线程。有可能整个线程都结束,其内部线程还在没结束。
wait fork
,语句,等待所有的
fork
线程结束。
task run_threads;
.<