我正在尝试验证两个模块之间的非常简单的握手。一个模块在慢时钟上并提高“req”,较快的模块应该在下一个快速时钟上提高“ack”并保持它直到下一个慢时钟构成。最终结果如下所示:
这就是我写期望的方式:
expect expect_ack_when_req_go is
(@req_rise_e) => @ack_rise_e
else dut_error("ERROR: ack expected to be asserted when req rises!");
*@req_rise_e 和@ack_rise_e 都是在慢时钟上采样的。
运行模拟器会产生错误,因为第一个表达式似乎成功但第二个没有。尽管在将事件跟踪到 wave 时,我可以看到两个事件一起发生(如 wave 中所示:event_req,event_ack)。