当前位置: 首页 > article >正文

Systemverilog中interprocess间synchronization和communication的记录

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.kler.cn/a/7779.html

相关文章:

  • HarmonyOS Next星河版笔记--界面开发(5)
  • Linux 命令行配置为单臂旁路由。
  • 多窗口切换——selenium
  • 【代码审计】常见漏洞专项审计-业务逻辑漏洞审计
  • vue动态列(表头)
  • 如何保证Redis与MySQL双写一致性
  • echarts 地图板块点击着色,移除着色
  • 冒泡排序算法
  • 蓝桥杯最后一战
  • 因果分析系列11----不依从性和LATE
  • 个人健康--英语单词练习
  • 第14届蓝桥杯C++A组题解
  • 【报错】安装SonarQube、SonarScanner在linux服务器上的配置
  • 分享(三):超全品类的免费可用 API 汇总(含AI 绘画,持续更新中)
  • http抓包工具:Charles Mac
  • Centos7搭建ntp时间服务器
  • KD2511N高精度直流低电阻值测试仪
  • Cadence Allegro 导出Unconnected Pins Report报告详解
  • 2023年初跳槽高峰期,测试工程师如何抓住机会拿到高薪offer
  • 多商户商城APP系统开发能够为企业商家带来哪些好处?
  • Stata 回归结果详解
  • Linux在游戏界的口碑树立
  • [c++17新增语言特性] --- 内联变量 和 if
  • python中字符串分割练习
  • 覆盖3700家机构!人大金仓联合卫宁健康助力广州市妇幼保健系统信创升级
  • 企业IM即时通讯软件需要具备哪些功能?