一、线程间的通信
- 测试平台中的所有线程都需要同步并交换数据。
- 一个线程需要等待另一个。
- 多个线程可能同时访问同一个资源。
- 线程之间可能需要交换数据。
- 所有这些数据交换和同步称之为线程间的通信(IPC)。
1.1 event 事件
- Verilog 中,一个线程总是要等待一个带@操作符的事件。这个操作符是边沿敏感的,所以它总是阻塞着、等待事件的变化。
- 其他线程可以通过 **->**操作符来触发事件,结束对第一个线程的阻塞。
- 这就像在打电话时,一个人等待另一个人的呼叫。
1.1.1 event的边沿阻塞
event e1,e2; 创建对象,不需要new();
——>e1,相当于在这个时刻打出电话,如果此时对方没有@e1,就是及时接电话,将会错失这次电话。
@检测现在事件有没有触发过,wait就是检测事件现在有没有触发过 以及 之前有没有触发过。
1.1.2 通知的需求
此时display中@e_speedup不可以替换成wait(e_speedup.triggered),因为wait(e_speedup.triggered)是电平触发,只要触发一次之后,使用wait(e_speedup.triggered),都满足要求。