IC验证学霸笔记3——SV-- event(二)

2线程间的通信

2.1概述

2.2 event

Verilog中,一个线程总要等待一个带@操作符的事件,这个操作符是边沿触发的,所以它总是阻塞的、等待事件的发生。

其它线程可以通过->操作符来触发事件,结束对第一个线程的阻塞。




 triggered()应用:
实例
不同的线程之间,有时会相互告知需求,比如,我们要开一辆车,在踩油门行驶之前,首先要看看汽车有没有发动,设计代码如下:
汽车要加速的时候,速度仪表信息又是如何显示的呢?
从这个汽车加速的例子来看,如果你要一直踩着油门不放的话,这个加速的event必定会被不断触发,而当线程A要给线程B传递超过一次的事件时,利用公共变量就不再是个好的选择。

上边的例子依然可以通过event触发,来多次通知另外一个线程。注意,对于线程多次通知的需求,应该使用“@”,而无法使用wait(event,triggered()),这是由于,当一个event被触发时,它的状态会使得event.triggered一直保持true,不过,event没有方法可以清除event.triggered的状态。

注:优秀验证学员随堂笔记,已经征求到学生的同意,会持续给牛友们分享!
大家看完记得 一键三连!多多支持
#做项目##芯片IC验证工程师##深度学习##转行转岗经验分享##你为什么选择硬件行业#
全部评论
感谢大佬分享,收藏了
点赞 回复 分享
发布于 2022-09-14 10:41 江苏

相关推荐

评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务