systemverilog,如何处理复位?

systemverilog, how to handle reset?

systemverilogsemaphore真是半生不熟

reset 的情况下,我找不到任何释放信号量的方法,例如 .flush() for uvm_tlm_fifo?

也没有办法知道有多少信号量被锁定了?

UVM 中是否有一些可用的包装器,例如 uvm_event 扩展了基本的信号量功能?

人们建议我使用 mailbox/tlm_fifo 以获得更多功能,但我找不到信号量的替代方法来分配超过 1 个 keyCount

如果有人有任何建议,请告诉我。

提前致谢。

SystemVerilog 的信号量和邮箱是基本的内置 类,您可以对其进行扩展以满足您的需要。信号量提供了基本的密钥锁定和解锁机制,但是由您来管理密钥。


我的意思是您可以扩展或封装信号量来控制谁可以访问密钥以及使用了多少密钥。

只需杀死与该信号量相关的所有旧线程,在其位置创建一个新的信号量并忘记旧的。与尝试清理旧的 运行 线程相比,这可能是一种更容易处理重置的方法。