System Verilog视频学习笔记(10)- Inter-Thread Communication

Inter-Thread Communication(内部线程通信)

内容来自启芯-System Verilog视频

============================================================== 

目录结构:

1、内部线程通信

2、event

3、semaphores

4、mailbox

5、总结

 ==============================================================

本章目标:

1、建立事件标志的执行流程(event)

2、避免资源冲突(semaphores)

3、数据传送(mailbox)

 

Inter-Thread Communication简称ITC,内部的线程通信需要通信。

1、内部线程通信

System Verilog视频学习笔记(10)- Inter-Thread Communication_第1张图片

图1、三种机制:event、semaphores和mailbox

2event

事件驱动,Event based,当前事件可驱动下个事件;分为三个过程声明事件,触发事件,执行事件。

System Verilog视频学习笔记(10)- Inter-Thread Communication_第2张图片

图2、事件执行

System Verilog视频学习笔记(10)- Inter-Thread Communication_第3张图片

图3、事件wait的语法

System Verilog视频学习笔记(10)- Inter-Thread Communication_第4张图片

图4、触发语法

 

事件一般用于统计覆盖率,控制仿真的终止。当覆盖率达到100%,触发某事件。

 

3semaphores

Semaphores就像一个桶,里面有钥匙,钥匙可以添加也可以删除。线程从Semaphores内获得钥匙,直到得到钥匙。

System Verilog视频学习笔记(10)- Inter-Thread Communication_第5张图片

图5、semaphore类

System Verilog视频学习笔记(10)- Inter-Thread Communication_第6张图片

图6、生成semaphores

System Verilog视频学习笔记(10)- Inter-Thread Communication_第7张图片

图7、例子

以下是图7例子的过程

1、生成16个桶

2、每个桶里一个钥匙

3、拿到一个钥匙

4、执行

5、执行完毕后放回钥匙

以上过程类似仲裁

 

4mailbox

mailbox建立数据通道,线程间数据的传输。

通过mailbox实现

System Verilog视频学习笔记(10)- Inter-Thread Communication_第8张图片

图8、mailbox类

创建mailbox

System Verilog视频学习笔记(10)- Inter-Thread Communication_第9张图片

图9、生成mailbox

将数据放入mailbox

task put(message);

function int try_pu(message);

mailbox获取信息,get

task get(ref message)

function int try_get(ref message);

 

5、总结

内部线程通信

一、线程执行顺序,通过event驱动事件执行

二、程序内部资源共享,但不能同时驱动,所以通过semaphores实现,相当从信号池中获得资源操作权限。

三、通过mailbox进行线程间的数据交互。

你可能感兴趣的:(System,Verilog)