System Verilog验证第七章笔记 - 进程间通信


IPC

IPC(inter process communicate)方法有:event(@,->),wait/disable,mailbox,semaphore。

线程结构

Verilog的线程结构有begin...end,fork...join。
System Verilog新增的fork...join_none,fork...join_any。

fork...join_none块后的语句默认早于块内的任何语句。
并发线程中务必使用automatic变量。
推荐用disable label的方法来停止命名线程,比disable fork指向性更明确。

事件

最常用于把事件传递到一个对象的构造器中。
wait(some_event.triggered)电平敏感类似于@some_event的边沿敏感,会检查当前整个时间步,减少了竞争,但是要注意防止零延时循环。

旗语

常用于总线互斥访问。
new,1个或多个钥匙。
get。
put。
try_get,1表示有足够的钥匙。

信箱

可看作有发端和收端的FIFO。
new,0或默认指无穷大。
put。
get。
peek。
try_get,1表示执行成功。
try_peek,1表示执行成功。

定容信箱和peek可以实现线程间同步,接收端先peek处理完再get,这时发端就知道处理完成了。

信箱内可以放入句柄,但不能是对象。所以循环体要确保每次循环都有构造对象/随机化/送入信箱的完整步骤,避免实际送入信箱的都是最后一次循环的数据。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值