在 Chisel 中解耦和不可撤销是什么意思?

What do decoupled and irrevocable mean in Chisel?

我经常看到这些术语来修改 i/o 捆绑包中的 i/o 端口,如 here, but it's unclear what they mean as though this source doesn't directly define them. The chisel-lang docs (as in here)重用定义中的术语,并没有太大帮助。

“解耦”和“不可撤销”都是 ready/valid 接口的实现。在这两种情况下,消费者都断言准备好表明它可以接受数据。生产者断言 valid 以指示它有数据。当 ready 和 valid 都被断言时,假设消费者获取了数据---一个 transaction 发生了。

解耦和不可撤销之间的区别在于,在解耦接口中,生产者可以在事务发生之前取消断言有效。或者,在不可撤销的接口中,生产者 不会 在交易发生之前取消断言有效。

DecoupledIO and IrrevocableIO 类.

上有一些关于此效果的文档

请注意,不可撤销的保证不是强制执行的。这只是图书馆作者明确说明某些制作人行为的一种方式。 (他们可能做错了事,没有强制执行不可撤销的保证。)Chisel 开发人员一直在讨论添加运行时断言以强制执行不可撤销的保证,但这还没有发生。