Systemverilog中interprocess间synchronization和communication的记录

news/2024/5/19 19:50:30 标签: Systemverilog, synchronization, Semaphore, Mailboxes, Event

1. 同步和通讯机制的种类

systemverilog提供了三种方式:named event type(->, @)、semaphore、mailbox。其中semaphores和mailbox虽然是built-in type,但它们是class,且可以作为base classes被扩展为更高level的class。这些built-in class放在built-in std package里,因此可以在任何scope里被使用的。

2. Semaphores(旗语)

semaphores像是一个水桶,只有获取到水桶里的key,才能继续执行。semaphores通常用于mutual exclusion、access control to shared resources和basic synchronization

3. Mailboxes(邮箱)

mailbox是一种通讯机制,可以用于processes之间进行message的交换,data可以通过mailbox从一个进程送到另一个进程。

mailbox有bounded和un-bounded两种。Bounded mailbox在满了之后,继续put会被block住。un-bounded mailbox不会满,一直put都可以的。

mailbox也可以分为generic mailbox和Parameterized mailboxes,这两种的区别是:generic里可以放各种类型的data,因此需要在runtime时做type check,而parameterized mailbox只能放特定的type,所以compiler在编译时就进行检查的。parameterized mailboxes和parameterized class/module/interface使用同样的parameter机制,定义如下:mailbox #(type = dynamic_type)。它的内置方法和generic mailbox一模一样。

4. named events

Named event提供对潜在synchronization对象的句柄。当一个process在等待event触发时,该process会被放在synchronization对象维护的queue中。process可以通过@操作符或检查triggered state的wait()来等待named event。

wait_order可以用于检测几个event发生的顺序。

event可以通过赋值为null来释放掉,如:

另外一点就是event变量的句柄可以用logically equality和case equality来进行比较的,如:


http://www.niftyadmin.cn/n/217566.html

相关文章

外贸业务开发过程中怎样练就灵敏的商业嗅觉?

我这个人,一直有几点坏毛病,一个是强迫症,一个是强烈的好奇心。比如在我入职目前这个行业时,因为对产品和行业知识一点都不懂,心里便暗暗下定决心要用最快的速度了解我们这个行业的全球市场及其公司和品牌。 所以但凡…

生成法线贴图的几款软件

1.CrazyBump http://crazybump.com/mac/ 2.SpriteIlluminator https://www.snakehillgames.com/spritelamp/ 3.SPRITE LAMP Sprite Lamp | Snake Hill Games 4.NormalMap-Online https://cpetry.github.io/NormalMap-Online/ 5.PhotoShop

git clone connect to gitlab sign in token弹窗让我输入用户名和密码

系列文章目录 文章目录系列文章目录前言前言 当我使用git bash输入命令:git clone https://gitlab.freedesktop.org/raqm/raqm.git libraqm 弹窗 ASUSLAPTOP-0R30I78P MINGW64 /e/krita-dev $ git clone https://gitlab.freedesktop.org/raqm/raqm.git libraqm C…

【蓝桥杯】2023年模拟赛第三场

一、 问题描述 请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。 请将这个数的十进制形式作为答案提交。 答案提交 这是一道结果填空的题,你…

【JAVA程序设计】(C00127)基于SSM+vue开发的音乐播放管理系统-有文档

基于SSMvue开发的音乐管理系统-有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架vue以及html前台的开发的音乐管理系统共分为二个角色:管理员、用户 管理员角色包含以下功能: 登录、个人中心(修改密码、个人信息修改&am…

代码随想录算法训练营第38天|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

代码随想录算法训练营第38天|509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯509. 斐波那契数 题目链接:509. 斐波那契数,难度:简单 【实现代码】 class Solu…

蓝桥杯知识点整理

知识点: 1、基本输入输出语法: (1)如cin速度比scanf慢 两者遇到空格回车会停止读入 (2)若想读整行需要cin.getline()或gets函数 (3)读到文件尾用scanf()!EOF等等 (4)占位符‘%’相关格式,如对齐方式,补0等。 2、C/C库函数以及stl模…

macOS升级到Ventura 后vscode远程开发ssh链接失败

背景 最近公司IT让升级到mac系统,说之前的老版本太久了,因此要被迫升级macOS系统,这是一次重大升级,升级之后加大了和apple其他设备的互通性,升级完成之后确实和iOS更像了。不过我升级后发现我的vscode连不上开发机了…