在Verilog中,如何同时等待级别敏感和边缘敏感事件?

在Verilog中,如何同时等待级别敏感和边缘敏感事件?,verilog,wait,test-bench,Verilog,Wait,Test Bench,在Verilog中编写测试台时,在“任务”中,我需要等待这样一个事件发生,即:当信号a为1'b1时,信号b具有posedge。然而,不幸的是,我尝试了,但没有得到好的解决方案: @(tb_hready and posedge tb_hclk) ;//(1) wait(tb_hready) @(posedge tb_hclk) ;//(2) wait(tb_hready && posedge tb_hclk) ;//(3) if(tb_hready

在Verilog中编写测试台时,在“任务”中,我需要等待这样一个事件发生,即:当信号a为1'b1时,信号b具有posedge。然而,不幸的是,我尝试了,但没有得到好的解决方案:

@(tb_hready and posedge tb_hclk)        ;//(1)
wait(tb_hready) @(posedge tb_hclk)      ;//(2)
wait(tb_hready && posedge tb_hclk)      ;//(3)
if(tb_hready) @(posedge tb_hclk)        ;//(4)
(1) 语法错误

(2) 语法是好的,但它将首先等待tb_-hready变高,然后拿起posedge,即使tb_-hready再次变低;--这不是我想要的

(3) 语法错误

(4) 语法是好的,但并没有实现我想要的,在这种表达式中,它似乎根本不“等待”tb_hready变高


我想这应该是一件相当简单的事情,但我无法得到我想要的,谷歌也帮不了我多少忙。有人有什么建议吗?thx~~

等待信号b正边缘并不容易,当它发生时,检查信号a是否处于活动状态?如果(信号a)得到它,代码会是什么样子,谢谢你,伙计~~@Prashant等待信号b正边缘不会更容易,当它发生时,检查信号a是否处于活动状态?那么代码会是什么样子?@(posedge信号b)如果(信号a)得到它,谢谢你,伙计~@Prashant
@(posedge tb_hclk iff tb_hready)