目录
semaphore旗语(semaphore的操作 资源共享的需求)
mailbox信箱(mailbox信箱的操作 数据通信的需求)
1 线程的使用
线程就是独立运行的程序。verilog中对initial语句块主要有两种分组方式:
begin ...end:中的语句顺序执行
fork...join中的语句以并发方式执行
2 线程的控制
在sv中,新增了fork...join_any fork...join_none 语句,其区别如下图
wait fork 和 disable fork
wait fork :等待所有子线程结束
disable 线程名:指定需要停止的线程
disable fork:停止当前线程中衍生出来未执行的所有子线程。
注意:若没有disable,则task会结束,但内部未完成的线程仍将执行。
3 线程间的通信
概述
测试平台中所有的线程都需要同步并交换数据。
一个线程需要等待另一个线程--------------->> 事件event
多个线程可能同时访问同一个资源-------->> 旗语semophore
线程之间可能需要交换数据---------------->> 信箱mailbox
所有这些数据交换和同步称为线程间的通信(IPC Interprocsss Communication)