SystemVerilog中的`mailbox`和`semaphore`在验证环境中实际怎么用?有没有简单的例子说明其应用场景?
学习UVM和SystemVerilog时,看到了`mailbox`和`semaphore`这些进程间通信机制,但书本上的例子比较抽象。在实际的验证环境搭建中,它们通常在什么场景下会被用到?比如,`mailbox`是不是常用于scoreboard比较数据?`semaphore`是不是用于控制对共享资源(如某个内存模型)的访问?能否结合一个简单的测试平台(testbench)例子,说明一下它们如何声明、使用,以及需要注意的坑(比如死锁)?