Systemverilog语言(8)-------threads and inter-process communication

1.topics

在这里插入图片描述
threads :线程
semaphores:信号量

2.threads

在这里插入图片描述
verilog里面:begin…end(顺序执行) ,fork…join(并发执行)可以构成线程。
在这里插入图片描述
fork…join:三个线程同时跑,同时结束(取决于耗时最长的线程)
fork…join_any:三个线程同时跑,任何一个线程跑完了就可以跑下面一个线程
fork…join_none:出现的三个线程当做子线程,join_none当做父线程,父线程和子线程是同时跑的,并且子线程是不会阻塞父线程的执行。
在这里插入图片描述
fork…join:只有当所有的子线程都完成才会执行父线程;可以在内部定义begin…end,每一个语句里必须包含时间更新,否则会出错,且begin…end并行执行。
在这里插入图片描述
在这里插入图片描述
spawned :产生
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
子线程和父线程是并发执行的。
在这里插入图片描述
在这里插入图片描述
父线程先执行,到子线程并发执行,子线程跑完之后执行父线程。
fork…join里面的那个begin…end按顺序执行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
子线程执行子线程的,父线程执行父线程的。
在这里插入图片描述
wait…fork:等待所有子线程执行完成。在这里插入图片描述
disbale…fork:有一个线程跑完之后,其余的线程咔嚓掉直接结束。

2.内部通信

2.1event

在这里插入图片描述
->(阻塞)或->>(非阻塞)是触发事件符号。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
wait_order:等待顺序触发,一般用来看状态机。
在这里插入图片描述
在这里插入图片描述
事件是需要声明的,null是空事件。
事件是可以比较的。

2.2旗语

在这里插入图片描述
主要用在一些共享资源的分配上。
semaphores其实就是一个内建的class,创建semaphores用new函数。
声明:semaphores seTx。
旗语的作用举例:一个教室有三个老师需要去上课,但是一次只能一个人上,因此钥匙一次只能给一个老师,可以用get()取钥匙,用put()放回钥匙。

2.3邮箱

在这里插入图片描述
数据传送的时候,有的需要传的快一点,有的需要传的慢一点,所以需要先存放。mailboxes具体讲就是用来存放数据的,处理数据的,类似于队列/FIFO。
类似邮箱的实际作用,很多事情首先存放在邮箱里,邮递员会将信件送给对应人。
put(),get(),num()。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
program 后面必须加上automatic。
根据握手信息进行非同步线程的通信。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值