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来进行比较的,如:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷公子的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值